package com.zhc.dejingapi.utils.common;

import com.zhc.dejingapi.pojo.param.QingDataCommResult;
import com.zhc.dejingapi.pojo.qingflow.QingflowApiInfo;
import com.zhc.dejingapi.pojo.qingflow.downdata.QingDownDataResultDetailBase;
import com.zhc.dejingapi.pojo.qingflow.downdata.QingDownDataResultMainBase;
import com.zhc.dejingapi.pojo.qingflow.downdata.QingDownDataRowDataBase;
import com.zhc.dejingapi.utils.qing.QingflowAPIUtils;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

@Slf4j
public class QingDataDownCommonUtils {
    public static QingDataCommResult DownAppDataByApplyId(QingflowApiInfo qqingflowApiInfo, String appKey, String strApplyId){
        QingDataCommResult commResult=new QingDataCommResult();
        String strBody="{\n" +
                "    \"pageSize\": 200,\n" +
                "    \"pageNum\": 1,\n" +
                "    \"type\": 8,\n" +
                "    \"sorts\": [],\n" +
                "    \"queriesRel\": \"\",\n" +
                "    \"queries\": [\n" +
                "        \n" +
                "    ],\n" +
                "    \"queryKey\": \"\",\n" +
                "    \"applyIds\": ["+strApplyId+"]\n" +
                "}";
        try{

            QingDownDataResultMainBase fieldResultMainBase = QingflowAPIUtils.GetAppDataInfo(qqingflowApiInfo, appKey, strBody);

            if (fieldResultMainBase == null
                    || fieldResultMainBase.getResult() == null
                    || fieldResultMainBase.getResult().getResult() == null) {

            } else {
                if (fieldResultMainBase.getErrCode() == 0) {

                    QingDownDataResultDetailBase resultDetailBase = fieldResultMainBase.getResult();
                    if (resultDetailBase.getResult().isEmpty()) {

                    } else {
                        DealAppDownData(appKey,resultDetailBase.getResult());
                    }
                } else {
                    log.error(fieldResultMainBase.getErrCode() + "\n" + fieldResultMainBase.getErrMsg());
                    commResult.setErrCode(fieldResultMainBase.getErrCode());
                    commResult.setErrMsg("数据下载失败，请根据errCode获取原因");
                }
            }

        }
        catch (Exception e){
            commResult.setErrCode(-10012);
            commResult.setErrMsg("数据下载失败"+e.getMessage()+"\n"+e.getStackTrace());
        }
        return commResult;
    }

    private static void DealAppDownData(String appKey, List<QingDownDataRowDataBase> result) throws Exception{
        List<QingDownDataRowDataBase> listRows=result;
        try {


            if (listRows == null || listRows.isEmpty()) {

            } else {

//                for (int i = 0; i < listRows.size(); i++) {
//                    QingDownDataRowDataBase rowDataBase = listRows.get(i);
//                    //获取行Id
//
//                    //mainDBModel.setApplyId(rowDataBase.getApplyId());
//                    //mainDBModel.setDownBatchId(downBatchId);
//
//                    //每个字段去赋值
//                    if (rowDataBase.getAnswers() == null || rowDataBase.getAnswers().isEmpty()) {
//
//                    } else {
//                        List<QingDownDataItemBase> listFields = rowDataBase.getAnswers();
//                        for (int j = 0; j < listFields.size(); j++) {
//                            QingDownDataItemBase itemBase = listFields.get(j);
//
//                            if (itemBase.getValues() == null || itemBase.getValues().isEmpty()) {
//
//                            } else {
//                                //region 保存主表内容
//                                try {
//                                    if (itemBase.getValues() == null || itemBase.getValues().isEmpty()) {
//                                        mainDBModel.PutFieldValue(itemBase.getQueTitle(), null);
//                                    } else {
//                                        List<QingDownDataItemValueBase> listFieldValues = itemBase.getValues();
//                                        mainDBModel.PutFieldValue(itemBase.getQueTitle(),
//                                                listFieldValues.get(0).getValue());
//                                    }
//                                } catch (Exception e) {
//                                    e.printStackTrace();
//                                }
//                                //endregion
//                            }
//
//                            //判断有没有明细表
//                            if (itemBase.getTableValues() == null || itemBase.getTableValues().length < 1) {
//                                //没有明细表
//                            } else {
//                                //有明细表
//                                //如何判断是哪个明细表？
//
//                                //region 有明细表
//                                String strQueTitle = itemBase.getQueTitle();
//                                //if (mainDBModel.getMapFieldContrast())
//                                //判断是否存在当前字段的明细表字义
//                                if (mainDBModel.CheckExistsDetailQueTitle(strQueTitle)) {
//                                    //如果包含，则要写数据
//
//                                    for (int k = 0; k < itemBase.getTableValues().length; k++) {
//                                        //每一个list就是一行
//                                        List<QingDownDataItemTableRowValueBase> listDetailRowValues = itemBase.getTableValues()[k];
//
//                                        if (listDetailRowValues == null || listDetailRowValues.isEmpty()) {
//
//                                        } else {
//                                            for (int l = 0; l < listDetailRowValues.size(); l++) {
//
//                                                QingDownDataItemTableRowValueBase tableRowValueBase = listDetailRowValues.get(l);
//                                                if (tableRowValueBase == null) {
//
//                                                } else {
//
//                                                    String strDetailQueTitle=tableRowValueBase.getQueTitle();
//                                                    String strDetailFieldValue=tableRowValueBase.getValues().get(0).getValue();
//
//                                                    mainDBModel.PutDetailFieldValue(k, strQueTitle, strDetailQueTitle,strDetailFieldValue);
//                                                }
//
//                                                //mainDBModel.PutDetailFieldValue(k,strQueTitle,listDetailRowValues.get(l).getValues().get(0).getValue());
//                                            }
//                                        }
//
//                                    }
//
//
//                                }
//                                //endregion
//                            }
//
//                        }
//                    }
//
//                    //保存到数据库
//                    mainDBModel.SaveToDB(mySqlJdbcTemplate);
//
//
//                }

            }
        }
        catch (Exception e){

            e.printStackTrace();
            throw e;
        }
    }
}
